package helloword;

import com.rabbitmq.client.*;
import org.junit.Test;
import utils.RabbitMQUtils;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

//消费者
public class Customer {


    public static void main(String[] args) throws IOException, TimeoutException {
/*        //创建连接mq的连接工厂对象
        ConnectionFactory connectionFactory = new ConnectionFactory();
        //设置连接rabbitmq的主机
        connectionFactory.setHost("localhost");
        //设置端口号
        connectionFactory.setPort(5672);
        //设置连接哪个虚拟主机
        connectionFactory.setVirtualHost("/ems");
        //设置访问虚拟主机的用户名和密码
        connectionFactory.setUsername("ems");
        connectionFactory.setPassword("123");


        //获取连接对象
        Connection connection = connectionFactory.newConnection();*/
        //通过工具类获取连接对象
        Connection connection = RabbitMQUtils.getConnection();

        //获取连接中的通道
        Channel channel = connection.createChannel();

        //通道绑定对应的消息队列--参数要和生产者保持对应，否则可能出现错误
        //参数1：queue 队列名称 如果队列不存在则自动创建
        //参数2：durable 用来定义队列特性是否要持久化 true 持久化队列 false 不持久化
        //参数3：exclusive 是否独占队列 true 独占队列 false 不独占
        //参数4：autoDelete 是否在消费完成后自动删除队列 true 自动删除 false 不自动删除
        channel.queueDeclare("hello", false, false, false, null);


        //消费信息
        //参数1：消费哪个队列的信息 队列名称
        //参数2：开始消息的自动确认机制
        //参数3：消费时的回掉接口
        channel.basicConsume("aa", true, new DefaultConsumer(channel) {

            //最后一个参数：消息队列中取出的信息
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                System.out.println("new String(body)=" + new String(body));
            }
        });
    }


    @Test
    public void test() throws IOException, TimeoutException {


    }
}
